package com.wmz.picture.model.enums;

import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

/**
 * @author lihechun
 * @version 1.0
 * @description: 用户角色枚举类
 * @date: 2024/12/14 23:32
 */
@Getter
public enum UserRoleEnum {

    USER("用户","user"),
    ADMIN("管理员","admin"),
    VIP("会员","vip");

    private final String text;
    private final String value;
    // 枚举值缓存：当枚举值过多时，获取某一个枚举值，可通过缓存优化性能
    private static final Map<String,UserRoleEnum> userRoleMap = new HashMap<>();

    static {
        userRoleMap.put("user",USER);
        userRoleMap.put("admin",ADMIN);
        userRoleMap.put("vip",VIP);
    }
    UserRoleEnum(String text, String value) {
        this.text = text;
        this.value = value;
    }

    /**
     * 根据value获取枚举
     * @param value 枚举值的value
     * @return  枚举值
     */

    public static UserRoleEnum getEnumByValue(String value) {
        if(ObjUtil.isEmpty(value)) {
            return null;
        }
        for(UserRoleEnum anEnum : values()) {
            if(anEnum.value.equals(value)) {
                return anEnum;
            }
        }
        return null;
    }

    /**
     * 通过Map获取枚举值
     * @param value 枚举值的value
     * @return 枚举值
     */
    public static UserRoleEnum getEnumByMapValue(String value) {
        if(userRoleMap.containsKey(value)) {
            return userRoleMap.get(value);
        }
        return null;
    }
}
